The modern communications era has brought about a tremendous expansion of wireline and wireless networks. Computer networks, television networks, and telephony networks are experiencing an unprecedented technological expansion, fueled by consumer demand. Wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.
Current and future networking technologies continue to facilitate ease of information transfer and convenience to users. One area in which there is a demand to increase ease of information transfer relates to image processing services for images captured by a mobile terminal. The image processing services may be provided from a network server or other network device, from the mobile terminal such as, for example, a mobile telephone, a mobile television, a mobile gaming system, etc, or even from a combination of the mobile terminal and the network device. The image processing services may include transmission, storage, processing, etc., of image files. For example, images captured by the mobile terminal may be stored in a memory of the mobile terminal, or communicated from the mobile terminal to a network device, such as a photo printer in communication with a wireless network.
In current applications, a user of a mobile terminal who wishes to wirelessly communicate images captured by the mobile terminal may experience relatively long delays in transmitting the images to the network device or to other mobile terminals. The long delays result due to the relatively long transmission times required to transmit image files of the size typically captured by imaging devices on modern mobile terminals. This is true even for image files that have been compressed, for example, by JPEG compression, which is well known in the art and commonly employed in current mobile terminals. Additionally, even assuming the user does not transmit the image file wirelessly, but instead, chooses to store the image file in a memory device of the mobile terminal, the size of the image file may present problems with regard to consumption of available memory.
Image processing, and especially image compression, at mobile terminals faces additional unique challenges. Due to the nature of mobile terminals, it is advantageous to limit the size and weight of such devices. Accordingly, there are often stringent limitations on the amounts and types of hardware included in such devices. Thus, memory may be limited or eliminated wherever possible. An effect of this desire to limit extraneous memory may be realized in the area of image processing by creating desirable limits for final compressed image data file size. In order to ensure image data files meet the final compressed image limits, it is often desirable to quantize image data and reduce certain “less important” quantized values to zero in order to get a smaller final compressed image data file size.
The quantization step is often performed by using a Q-table. For example, an image, or segment of an image, may be divided into a tiled array of 8×8 blocks as shown in FIG. 5. Each of the blocks may represent a pixel. Thus, the tiled array includes 64 pixels in which each pixel represents, for example, a greyscale value in the spatial domain. Each greyscale value may be, for example, a value between 0 and 255 for an 8 bit pixel. The tiled array is then transformed, for example, using a Discrete Cosine Transform (DCT), to produce a DCT coefficient array in the frequency domain. The Q-table is then applied to the DCT coefficient array to produce an array of quantized coefficients. Generally, more heavily quantized coefficients corresponding to high frequency image data carry less useful or important information for reconstructing an image. Thus, the Q-table is often defined such that values expected to contain “less important” information are likely to be reduced to zero as a result of the quantization, thereby increasing the number of zero values in the array of quantized coefficients.
The array of quantized coefficients is converted to a linear sequence be means of a “zigzag order” as shown by the arrows in FIG. 5. The linear sequence is then compressed using, for example, run length encoding (RLE) and standard entropy compression such as Huffman compression. If the quantization step has produced many zeros, the resulting compressed image data file is likely to have a relatively small size as may be desired. However, in a situation where image data must be compressed in a single pass, such as in an image co-processor with no frame store, there is no guarantee that the compressed image data file will have a size that meets a desired size. Accordingly, a specified number of bits may be reduced to zero in each image to further decrease resultant compressed image file sizes. Since standard compression, such as the JPEG standard, does not permit use of multiple different Q-tables for the same data set of one channel image, methods of reducing more bits to zero often treat each 8×8 block or part of the image the same and therefore throw away important data for some images by over compressing an 8×8 block or part of the image with a relatively high amount of useful information, while under compressing an 8×8 block or part of the image with a relatively low amount of useful information.
Given the above described problems, it may be advantageous to compress images, or otherwise reduce image file size beyond the standard compression methods currently employed. However, attempts to further reduce image file size often lead to a loss in image data and a subsequent reduction in image quality. Thus, there is a need for a means to reduce image file size while minimizing any degradation that is visually perceptible to a viewer of the image.